package org.soderiakelvy.controller.producto;

import java.util.List;

import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.soderiakelvy.controller.util.Constante;
import org.soderiakelvy.controller.util.SelectOneMany;
import org.soderiakelvy.model.domain.TipoProductoVO;
import org.soderiakelvy.model.service.ProductoServicio;
import org.soderiakelvy.model.service.imp.ProductoServicioImp;
import org.soderiakelvy.model.util.ConstantModel;

@ManagedBean
public class TipoProductoList {
	private ProductoServicio service;
	private List<TipoProductoVO> tiposDeProductos = SelectOneMany.getAllTiposDeProductos();
	
	public TipoProductoList(){		
		service = new ProductoServicioImp();
	}

	public String prepareEdit(TipoProductoVO tp){		
		FacesContext fc = FacesContext.getCurrentInstance();
		Map<String,Object> sessionParams = fc.getExternalContext().getSessionMap();
		sessionParams.put("tipoProducto", tp);
		return Constante.URL_TIPO_PRODUCTO_EDIT;
	}
	
	public String nuevoTipoProducto(){
		return Constante.URL_TIPO_PRODUCTO_NEW;
	}
	
	public void eliminarTipoProducto(TipoProductoVO tp){
		String result = service.deleteTipoProductoVO(tp);
		if(result.equals(ConstantModel.SUCCESS)){
			tiposDeProductos = SelectOneMany.getAllTiposDeProductos();
		}else{
			if(result.equals(ConstantModel.DELETE_ASIGNADO)){
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"No se puede eliminar el Tipo de Producto porque tiene Productos asignados", "sss"));
			}else {
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error al Insertar un registro", "Surgio un error al eliminar un registro. Comuicarse con el responsable del Sistema"));
			}
		}
	}
	
	public List<TipoProductoVO> getTiposDeProductos() {
		return tiposDeProductos;
	}

	public void setTiposDeProductos(List<TipoProductoVO> tiposDeProductos) {
		this.tiposDeProductos = tiposDeProductos;
	}
	
	
}
